//
//  PushManager.h
//  PushSDK
//
//  Created by kenny on 2017/6/8.
//  Copyright © 2017年 APICloud. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface PushManager : NSObject

/*!
 启动SDK
 @param appId 从网站控制台概览里面获取
 @param appKey 从网站控制台概览里面获取
 @param domain 服务端地址，例如：https://www.apicloud.com
 */
+ (void)startWithAppId:(NSString *)appId appKey:(NSString *)appKey domain:(NSString *)domain;

// 上传deviceToken
+ (void)uploadDeviceToken:(NSData *)deviceToken;

// 以下方法的参数及返回结果详见http://docs.apicloud.com/Client-API/Cloud-Service/push

// 将来自第三方业务系统的用户信息绑定至推送服务器，实现推送给指定用户的功能（即单推）。
+ (void)bind:(NSDictionary *)param completion:(void(^)(NSDictionary *result))completion;

// 解除已绑定用户的绑定状态，解除绑定后，无法再指定该用户推送。
+ (void)unbind:(NSDictionary *)param completion:(void(^)(NSDictionary *result))completion;

// 加入某个群组。加入该群组后，当服务器向该群组推送时，所有在该群组内的用户都会收到推送，非该群组用户不会收到推送。默认所有用户都加入"all"群组。
+ (void)joinGroup:(NSDictionary *)param completion:(void(^)(NSDictionary *result))completion;

// 退出某个群组。退出该群组后，服务器向该群组推送消息时，此用户将不再收到推送。
+ (void)leaveGroup:(NSDictionary *)param completion:(void(^)(NSDictionary *result))completion;

// 一次性退出所有通过joinGroup加入的群组。
+ (void)leaveAllGroup:(void(^)(NSDictionary *result))completion;

@end
